package com.gobang.domain.message;

import lombok.*;

/**
 * 落子响应消息DTO
 * 服务器向客户端发送的落子响应消息
 * 
 * @author System
 * @since 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class MoveResponseMessage extends WebSocketMessage {
    
    /**
     * 落子响应数据
     */
    private MoveResponseData data;
    
    /**
     * 落子响应数据内部类
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class MoveResponseData {
        /**
         * 房间ID
         */
        private String roomId;
        
        /**
         * 操作是否成功
         */
        private Boolean success;
        
        /**
         * 落子信息
         */
        private MoveInfo move;
        
        /**
         * 游戏状态
         */
        private String gameStatus;
        
        /**
         * 获胜者ID
         */
        private Long winnerId;
        
        /**
         * 游戏是否结束
         */
        private Boolean isGameOver;
        
        /**
         * 下一轮到谁
         */
        private String nextTurn;
        
        /**
         * 错误码（操作失败时）
         */
        private String errorCode;
        
        /**
         * 错误消息（操作失败时）
         */
        private String errorMessage;
    }
    
    /**
     * 落子信息内部类
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class MoveInfo {
        /**
         * 行坐标
         */
        private Integer row;
        
        /**
         * 列坐标
         */
        private Integer col;
        
        /**
         * 棋子颜色
         */
        private String color;
    }
    
    /**
     * 构造函数
     */
    public MoveResponseMessage(MoveResponseData data) {
        super("MOVE_RESPONSE");
        this.data = data;
    }
} 